
"""
数据库断言封装
{"expected_data":1,"actual_data":"SELECT COUNT(*) FROM tz_attach_file WHERE file_path ='#file_path#'"}
"""

import json
from unittest import TestCase

import allure

from tools.handle_replace import HandleReplace
from tools.handle_mysql import mysql

class HandleAssertDb:
    def __init__(self):
        self.my_assert = TestCase()
        self.replace = HandleReplace()

    #数据库断言
    @allure.step("数据库断言")
    def assert_db(self,assert_db:str):
        if assert_db:
            #获取excel中的assert_db字段，转换成python对象
            assert_db = assert_db if isinstance(assert_db,dict) else json.loads(assert_db)
            #替换sql语句中的数据,返回替换后的sql语句
            sql = self.replace.replace_sql(sql=assert_db["actual_data"])
            #执行sql语句，拿到执行结果
            result = mysql.get_datas(sql=sql)
            #断言期望与实际结果
            self.my_assert.assertEqual(assert_db["expected_data"],result[0])
        else:
            print("excel中assert_db字段为空，不需要做数据库断言")

